import { defineStore } from 'pinia'
import { io } from 'socket.io-client'

// 判断是否为自己主动退出, 默认为false
/*
  $io需要使用的东西
  1. 完成io实例,
  2. 绑定on登录事件
  3. 绑定emit, 退出登录事件
  问题, 是否需要通过store的方法进行封装, 或者直接获取值进行操作
    如果直接操作: 就需要依赖创建$io
    如果分段操作: 用户登录时, 创建$io实例, 可以点击socket页面进行登录
*/

export const useSocket = defineStore('socket', {
  state: () => {
    return {
      $io: null
    }
  },
  actions: {
    // 这里是直接进行判断, 如果为true, 就创建io实例, 进行赋值
    getIo(value: boolean) {
      if (value === true) {
        this.$io = this.$io || io('ws://127.0.0.1:8888', {
          transports: ['websocket'],
        })
      }
    },
    cleanIo() {
      this.$io = null
    }
    }
})


